package com.harkjeans.javacoding.basic;

/**
 * ClassName: Exercise2
 * Package: com.harkjeans.javacoding.basic
 * Description: 练习2:打印素数
 *
 * @Author harkjeans
 * @Create 2025/10/14 10:52
 * @Version 1.0
 */

import java.sql.SQLOutput;
import java.util.Scanner;
import java.util.concurrent.ForkJoinPool;

/**
 * 判断101~200之间有多少个素数，并输出所有素数。
 */
public class Exercise2 {
    public static void main(String[] args) {
        // 质数:1. 公因数只有1和本身 2. 不可能为偶数(2除外)
        // 3. 若不是质数则必有因数 <= sqrt(i)
        // 故只需要检查101~200间的奇数i,并判断i是否能整除3~sqrt(i)

        int count = 0;

        System.out.println("101~200间的质数有:");

        for (int i = 101; i <= 200; i++) {
            if(isPrime(i)){
                System.out.print(i + " ");
                count++;

                if(count % 5 == 0){
                    System.out.println();
                }
            }
        }
        System.out.println("\n一共有" + count + "个质数");

    }

    /**
     * 判断 i 是否为素数
     * @param i
     * @return
     */
    public static boolean isPrime(int i){
        if(i < 2){
            return false;
        }

        if(i == 2){
            return true;
        }

        if(i % 2 == 0){
            return false;
        }

        for (int j = 3; j <= Math.sqrt(i); j += 2) {
            if(i % j == 0){
                return false;
            }
        }
        return true;
    }

}
